// 组合式API

//定义小仓库
import { defineStore } from 'pinia'
// 引入接口
import { reqUserLogin } from '@/api/user'
//引入数据类型
import type { loginForm } from '@/api/user/type'
import { ref } from 'vue'
//第一个参数：仓库名字
// 第二个参数：小仓库配置对象
// defineStore方法执行会返回一个函数，函数作用就是让组件可以获取到仓库数据
let useUserStore = defineStore('User', () => {
  let token = ref(localStorage.getItem('TOKEN'))
  const userLogin = async (data: loginForm) => {
    let result = await reqUserLogin(data)
    if (result.code == 200) {
      token.value = result.data.token
      localStorage.setItem('TOKEN', result.data.token)
      localStorage.setItem('USERNAME', data.username)
      localStorage.setItem('PASSWORD', data.password)
      return 'ok'
    } else {
      token.value = ''
      localStorage.setItem('TOKEN', '')
      localStorage.setItem('USERNAME', '')
      localStorage.setItem('PASSWORD', '')
      return Promise.reject(new Error(result.data.message))
    }
  }
  //务必要返回一个对象，属性与方可以提供给组件使用
  return {
    userLogin,
    token,
  }
})

export default useUserStore
